package proyecto.ort.edu.uy.dao.impl;

import java.util.List;

import javax.ejb.Stateless;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import proyecto.ort.edu.uy.dao.EmpresaDAOInterface;
import proyecto.ort.edu.uy.dominio.Empresa;

@Stateless
public class EmpresaDAOImpl implements EmpresaDAOInterface {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7794985176949337593L;

	@PersistenceContext(unitName = "PrototipoEM")
	private EntityManager em;

	@Override
	public void agregarEmpresa(Empresa empresa) {
		this.em.persist(empresa);
	}

	@Override
	public void actualizarEmpresa(Empresa empresa) {
		this.em.merge(empresa);
	}

	@Override
	public List<Empresa> buscarTodas() {
		String sql = "Select e From Empresa e";
		Query query = this.em.createQuery(sql);
		List<Empresa> lstEmpresas = query.getResultList();
		// TODO Auto-generated method stub
		return lstEmpresas;
	}

	@Override
	public Empresa buscarEmpresaPorId(Long idEmpresa) {
		String sql = "Select e From Empresa e Where idEmpresa=:idEmpresa";
		Query query = this.em.createQuery(sql);
		query.setParameter("idEmpresa", idEmpresa);
		// TODO Auto-generated method stub
		return (Empresa) query.getSingleResult();
	}

	@Override
	public Integer cantidadUsuarios(Empresa e) {
		String sql = "select distinct(u.idUsuario) from Usuario u where u.empresa = :empresa";
		Query query = this.em.createQuery(sql);
		query.setParameter("empresa", e);

		Integer resultado = query.getResultList().size();

		return resultado;

	}

}
